import axios from "axios";
import { ref } from "vue";

// 创建 Axios 实例，baseURL 根据 vue-cli 环境变量动态切换
console.log("API Base URL:", process.env.VUE_APP_API_BASE_URL);

const api = axios.create({
  baseURL: process.env.VUE_APP_API_BASE_URL,
  timeout: 30000,
  headers: {
    "Content-Type": "application/json",
  },
});

// 添加响应拦截器
api.interceptors.response.use(
  (response) => response,
  (error) => {
    if (error.response) {
      console.error("API Error:", error.response.data);
      return Promise.reject(error.response.data.message || "API请求错误");
    } else if (error.request) {
      console.error("No response:", error.request);
      return Promise.reject("服务器无响应");
    } else {
      console.error("Request error:", error.message);
      return Promise.reject("请求配置错误");
    }
  }
);

export default {
  // 获取配置
  getConfig() {
    return api.get("/config");
  },

  // 保存配置
  saveConfig(config) {
    return api.post("/config", config);
  },

  // 测试连接
  testConnection(connectionData) {
    return api.post("/test-connection", connectionData);
  },

  // 开始迁移
  startMigration(data, config) {
    return api.post("/migrate", data, {
      ...config,
      responseType: "stream",
      onDownloadProgress: config?.onDownloadProgress,
    });
  },

  // 获取日志
  getLogs() {
    return api.get("/logs");
  },

  // 获取表格数据
  getTables(config) {
    return api.post("/tables/list", config);
  },

  batchMigration(data) {
    return api.post("/migrate/batch", data);
  },

  // 获取 API 引擎列表
  getApiEngines() {
    return api.get("/migrate/api-engines");
  },
  // 批量迁移 API 引擎
  batchMigrateApiEngines(apiList) {
    return api.post("/migrate/api-engines/migrate", { apiList });
  },
};
